/*
 * Copyright (c) 2013.
 * 游戏服务器核心代码编写人陈磊拥有使用权
 * 联系方式：E-mail:13638363871@163.com ;qq:502959937
 * 个人博客主页：http://my.oschina.net/chenleijava
 */

package com.dc.gameserver.serverCore.model.gamemodel;

import javolution.util.FastTable;

/**
 * @author 石头哥哥
 *         Date: 13-12-2</br>
 *         Time: 上午11:37</br>
 *         Package: com.dc.gameserver.serverCore.model.Gamemodel</br>
 *         注解：  关卡model   Point     --config level
 */
public class LevelModel implements Model,Comparable<LevelModel> {

    private Integer ID=0;     //关卡编号
    private Integer areaID=0; //地图编编号  ---对应
    private String name="";  //关卡名称
    private String intro="";//desc
    private FastTable<itemDropModel> itemDropModelFastTable=null ;

    private Integer enemyID=0;      //怪物ID   enemyID      monster

    private Integer element1=0;      //五行属性金   value  elementNum
    private Integer element2=0;      //五行属性木    value  elementNum
    private Integer element3=0;      //五行属性土     value  elementNum
    private Integer element4=0;      //五行属性水     value  elementNum
    private Integer element5=0;      //五行属性火   value  elementNum    关卡五行需求

    private Integer soulCost=0;      //神识值消耗   在每场战斗开始扣除

    private Integer jadeCoinCost=0;   //额外每日次数仙玉消耗
    private Integer soulNeed=0;              // 神识需求

    private Integer completeMaxPerDay=0;    //每天最大完成次数        db:当天完成的关卡次数

    //针对隐藏关卡
    private Integer completePerUnlock=0;    //每次解锁可完成次数

    private Integer  unlockType1=0;     //解锁类型
    private Integer  unlockID1=0;   //解锁ID
    private Integer  unlockNum1=0;  //解锁数量

    private Integer unlockType2=0;     //解锁类型
    private Integer unlockID2=0;  //解锁ID
    private Integer unlockNum2=0;    //解锁数量

    private Integer  exerciseExpGet=0;  //获得的历练经验
    private Integer killExpGet=0;   //获得的杀气经验
    private Integer  stoneCoinGet=0;  //获取的灵石数量
    private Integer jadeCoinGet=0;     //获取的仙玉数量

    private Byte levelType=0;   //levelType关卡类型 1：普通 2：神识 3：隐藏

    public Byte getLevelType() {
        return levelType;
    }

    public void setLevelType(Byte levelType) {
        this.levelType = levelType;
    }


    public Integer getEnemyID() {
        return enemyID;
    }

    public void setEnemyID(Integer enemyID) {
        this.enemyID = enemyID;
    }

    public Integer getElement1() {
        return element1;
    }

    public void setElement1(Integer element1) {
        this.element1 = element1;
    }

    public Integer getElement2() {
        return element2;
    }

    public void setElement2(Integer element2) {
        this.element2 = element2;
    }

    public Integer getElement3() {
        return element3;
    }

    public void setElement3(Integer element3) {
        this.element3 = element3;
    }

    public Integer getElement4() {
        return element4;
    }

    public void setElement4(Integer element4) {
        this.element4 = element4;
    }

    public Integer getElement5() {
        return element5;
    }

    public void setElement5(Integer element5) {
        this.element5 = element5;
    }

    public Integer getJadeCoinCost() {
        return jadeCoinCost;
    }

    public void setJadeCoinCost(Integer jadeCoinCost) {
        this.jadeCoinCost = jadeCoinCost;
    }

    public Integer getCompletePerUnlock() {
        return completePerUnlock;
    }

    public void setCompletePerUnlock(Integer completePerUnlock) {
        this.completePerUnlock = completePerUnlock;
    }

    public Integer getExerciseExpGet() {
        return exerciseExpGet;
    }

    public void setExerciseExpGet(Integer exerciseExpGet) {
        this.exerciseExpGet = exerciseExpGet;
    }

    public Integer getKillExpGet() {
        return killExpGet;
    }

    public void setKillExpGet(Integer killExpGet) {
        this.killExpGet = killExpGet;
    }

    public Integer getStoneCoinGet() {
        return stoneCoinGet;
    }

    public void setStoneCoinGet(Integer stoneCoinGet) {
        this.stoneCoinGet = stoneCoinGet;
    }

    public Integer getJadeCoinGet() {
        return jadeCoinGet;
    }

    public void setJadeCoinGet(Integer jadeCoinGet) {
        this.jadeCoinGet = jadeCoinGet;
    }

    public Integer getAreaID() {
        return areaID;
    }

    public void setAreaID(Integer areaID) {
        this.areaID = areaID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIntro() {
        return intro;
    }

    public void setIntro(String intro) {
        this.intro = intro;
    }

    public Integer getSoulCost() {
        return soulCost;
    }

    public void setSoulCost(Integer soulCost) {
        this.soulCost = soulCost;
    }

    public Integer getSoulNeed() {
        return soulNeed;
    }

    public void setSoulNeed(Integer soulNeed) {
        this.soulNeed = soulNeed;
    }

    public Integer getCompleteMaxPerDay() {
        return completeMaxPerDay;
    }

    public void setCompleteMaxPerDay(Integer completeMaxPerDay) {
        this.completeMaxPerDay = completeMaxPerDay;
    }


    public Integer getUnlockType1() {
        return unlockType1;
    }

    public void setUnlockType1(Integer unlockType1) {
        this.unlockType1 = unlockType1;
    }

    public Integer getUnlockID1() {
        return unlockID1;
    }

    public void setUnlockID1(Integer unlockID1) {
        this.unlockID1 = unlockID1;
    }

    public Integer getUnlockNum1() {
        return unlockNum1;
    }

    public void setUnlockNum1(Integer unlockNum1) {
        this.unlockNum1 = unlockNum1;
    }

    public Integer getUnlockType2() {
        return unlockType2;
    }

    public void setUnlockType2(Integer unlockType2) {
        this.unlockType2 = unlockType2;
    }

    public Integer getUnlockID2() {
        return unlockID2;
    }

    public void setUnlockID2(Integer unlockID2) {
        this.unlockID2 = unlockID2;
    }

    public Integer getUnlockNum2() {
        return unlockNum2;
    }

    public void setUnlockNum2(Integer unlockNum2) {
        this.unlockNum2 = unlockNum2;
    }


    public FastTable<itemDropModel> getItemDropModelFastTable() {
        return itemDropModelFastTable;
    }

    public void setItemDropModelFastTable(FastTable<itemDropModel> itemDropModelFastTable) {
        this.itemDropModelFastTable = itemDropModelFastTable;
    }
    /**
     * @return
     */
    @Override
    public Integer getId() {
        return ID;
    }
    public void setID(Integer ID) {
        this. ID= ID;
    }

    @Override
    public int compareTo(LevelModel o) {
        int temp=this.getId()-o.getId();
        if (temp>0){
            return 1;
        }else if (temp==0){
            return 0;
        }else {
            return -1;
        }
    }
}
